// 引入时间插件
import dayjs from "dayjs"
// 引入校验规则
import Schema from "validate"
// 添加校验规则
const visitorInfo = new Schema({
  // 房屋信息
  houseId: {
    type: String, // 类型
    required: true, // 非空
    message: '房屋信息不能为空', // 提示信息
  },
  // 访客姓名
  name: {
    type: String, // 类型
    required: true, // 非空
    message: '访客姓名不能为空', // 提示信息
  },
  // 手机号码
  mobile: {
    type: String, // 类型
    match: /^1[3-9]\d{9}$/, // 手机号码
    message: '手机号码不合法', // 提示信息
  },
  // 访问时间
  visitDate: {
    type: String, // 类型
    required: true, // 非空
    message: '访问时间不能为空', // 提示信息
  },
},
  { strip: false }//解决验证对象后 数据属性的丢失问题
)
Page({
  data: {
    // 显示当前时间
    currentDate: Date.now(),
    // 获取最大时间 当前时间的三天内
    // 原生写法
    // maxdate: Date.now() + 1000 * 60 * 60 * 24 * 3,
    // dayjs写法
    // maxdate: dayjs(Date.now()).add(3, 'd').valueOf(),
    maxdate: +dayjs(Date.now()).add(3, 'd'),
    dateLayerVisible: false,
    houseLayerVisible: false,
    // 房屋列表
    houseList: [],
    // 房屋id
    houseId: '',
    // 房屋名称
    houseInfo: '',
    // 姓名
    name: '',
    // 性别 0 女 1 男
    gender: 1,
    // 手机号码
    mobile: '',
    // 访客日期 - 限制 今天开始 往后推3天
    visitDate: '',
  },
  onLoad() {
    this.getHouseList()
  },

  // 获取真实 维修房屋 列表
  async getHouseList() {
    const res = await wx.http({ url: '/house' })
    // console.log(27, res)
    this.setData({
      houseList: res.data,
    })
  },
  openHouseLayer() {
    this.setData({ houseLayerVisible: true })
  },
  closeHouseLayer() {
    this.setData({ houseLayerVisible: false })
  },
  openDateLayer() {
    this.setData({ dateLayerVisible: true })
  },
  closeDateLayer() {
    this.setData({ dateLayerVisible: false })
  },
  // 选择了要维修房屋
  onHouseSelect(ev) {
    // console.log(ev);
    this.setData({
      houseId: ev.detail.id,
      houseInfo: ev.detail.name,
    })
  },
  // 确认按钮
  onDateTimeConfirm(ev) {
    // 得到的时间是时间戳要将其转化为 "2020-02-02"这种格式
    // console.log(ev.detail);
    // 下载并引入dayjs插件
    // console.log(dayjs(ev.detail).format("YYYY-MM-DD"));
    this.setData({
      visitDate: dayjs(ev.detail).format("YYYY-MM-DD")
    })
    // 关闭选择日期的弹窗组件
    this.closeDateLayer()
  },
  // 取消按钮
  onDateTimeCancel() {
    // 关闭选择日期的弹窗组件
    this.closeDateLayer()
  },
  // 确认提交
  async onSubmit() {
    /* 
    获取数据 表单校验 调接口传值 页面跳转
    
    */
    const { houseId, name, gender, mobile, visitDate, } = this.data
    const params = { houseId, name, gender, mobile, visitDate }
    const errors = visitorInfo.validate(params)
    console.log(errors);
    if (errors.length) {
      wx.utils.toast(errors[0].message)
      return
    }
    const res = await wx.http({
      url: '/visitor',
      method: 'post',
      data: params
    })
    console.log(res);
    if (res.code !== 10000) {
      return wx.utils.toast(res.message)
    }
    wx.showToast({ title: '新增成功' })
    setTimeout(() => {
      wx.navigateTo({
        url: '/visitor_pkg/pages/list/index'
      })
    }, 1500)
  },
})
